$NG.AllReady(function (
    editPage,
    { useAction, useValuesChange, useUpdateRows, useUpdateRow, useDataIndexChange, useClick }
) {
    const mstform = $NG.getCmpApi("p_form_risk_list")
    const user = $NG.getUser()
    
    $NG.updateState((updater)=>{
        updater.data.p_form_risk_list.setProps({
            u_propose_dt: formatDate(new Date(), "yyyy-mm-dd"),
            u_sustain_time: daysBetween(mstform.getItem("bill_dt").getValue(),formatDate(new Date(), "yyyy-mm-dd"))
        })
    })

    // 项目监听
    useValuesChange(({args})=>{
        getProjectInfo()
        // cntMFilter()
    },"p_form_risk_list.phid_pc")

    // 监听干系人
    useValuesChange(({args})=>{
        console.log("干系人监听", args);
        getGxrInfo()
    }, "p_form_risk_list.u_customer_name")
    console.log('用户信息', user);

     // 获取项目
     function getProjectInfo(isReturn = false, phid = mstform.getItem("phid_pc").getValue(), fun){
        try{
            setTimeout(()=>{
                $NG.execServer("getPtInfoByPhid",{phid: phid}, (res)=>{
                    const _data = JSON.parse(res.data)[0].extendObjects
                    console.log(`获取项目信息`, _data);
                    if(isReturn){
                        fun(_data)
                    } else {
                        $NG.updateState((updater)=>{
                            updater.data.p_form_risk_list.setProps({
                                u_pc_no: _data.pc_no, //项目编码
                                // 项目经理
                                phid_emp:{
                                    label:_data.project_manager_name,
                                    value:_data.project_manager_phid
                                },
                                // phid_org: {
                                //     //事业部or组织
                                //     value: _data.org_phid,
                                //     label: _data.org_name,
                                // },
                                // u_regional_center: {
                                //     //区域中心
                                //     value: _data.regional_center_phid,
                                //     label: _data.regional_center_name,
                                // },
                            })
                        })
                    }
                })
            },100)
        }catch(err){
            $NG.alert("获取项目信息发生失败请检查~")
        }
    }

    // 干系人信息查询
    function getGxrInfo(){
        $NG.execServer("getGxrInfo", {phid:mstform.getItem("u_customer_name").getValue()}, function (res){
            console.log('干系人信息查询', res);
            const _data = JSON.parse(res.data)[0].extendObjects
            console.log('信息', _data);
            $NG.updateState((updater)=>{
                updater.data.p_form_risk_list.setProps({
                    // JIRA号
                    u_jira_no:"",
                    // 客户层级
                    u_custom_level: _data.u_level,
                    // 客户职务
                    u_customer_position: _data.u_position,
                    // 客户单位名称
                    u_customer_unit: _data.u_customer_name
                })
            })
        })
    }
});
// 格式化日期
function formatDate(dateStr, outputFormat) {
    const date = new Date(dateStr);

    if (isNaN(date)) {
        return "无效的日期字符串";
    }

    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hours = String(date.getHours()).padStart(2, '0');
    const minutes = String(date.getMinutes()).padStart(2, '0');

    let formattedDate;

    switch (outputFormat) {
        case "yyyy-mm-dd":
            formattedDate = `${year}-${month}-${day}`;
            break;
        case "yyyy-mm-dd HH:mm":
            formattedDate = `${year}-${month}-${day} ${hours}:${minutes}`;
            break;
        // 可以根据需要继续添加其他格式的处理逻辑
        default:
            formattedDate = "不支持的输出格式";
    }

    return formattedDate;
}
// 计算2个日期之间得天数
function daysBetween(date1, date2) {
    // 将日期字符串转换为 Date 对象
    const d1 = new Date(date1);
    const d2 = new Date(date2);
    
    // 检查输入是否是有效日期
    if (isNaN(d1) || isNaN(d2)) {
        throw new Error("Invalid date format. Use 'yyyy-mm-dd'.");
    }

    // 计算时间差（毫秒）
    const timeDiff = Math.abs(d2 - d1);

    // 将毫秒转换为天数
    const dayDiff = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));

    return dayDiff;
}